package reflect.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
@Target:注解的作用目标
ElementType:枚举，表示该注解可以用在哪些地方
ElementType.TYPE:类，接口，枚举，注解
ElementType.FIELD:属性
ElementType.METHOD:方法
ElementType.PARAMETER:参数
ElementType.CONSTRUCTOR:构造器
ElementType.LOCAL_VARIABLE:局部变量
ElementType.ANNOTATION_TYPE:注解
ElementType.
ElementType.PACKAGE:包


 @Retention:注解的保留策略
 RetentionPolicy:枚举，表示注解的保留策略
        对应三个值：
        Retention.SOURCE:在源文件中有效，编译器会丢弃，不会输出到class文件
        Retention.CLASS:在class文件中有效，但运行时丢弃（反射不能用,因为反射属于运行时）
        Retention.RUNTIME:在运行时有效，可以通过反射获得

 */
//@Target({ElementType.TYPE,ElementType.FIELD})//参数大于两个参数用括号括起来，因为是个数组
@Target(ElementType.TYPE)//
// 注解其他注解的注解叫元注解
//TYPE规定只能在类，接口，枚举上

@Retention(RetentionPolicy.RUNTIME)
public @interface AutoRunClass {

}
